﻿//#include<iostream>
//#include<unordered_map>
//
//using namespace std;
//
//const int N = 1e6 + 10;
//int n;
//int a[N];
//
//int main()
//{
//	int T;
//	cin >> T;
//	while (T--)
//	{
//		cin >> n;
//		for (int i = 1; i <= n; i++)
//		{
//			cin >> a[i];
//		}
//
//		int left = 1, right = 1, ret = 0;
//		unordered_map<int, int> mp;
//
//		while (right <= n)
//		{
//			mp[a[right]]++;
//			while (mp[a[right]] > 1)
//			{
//				mp[a[left]]--;
//				left++;
//			}
//			ret = max(ret, right - left + 1);
//			right++;
//		}
//
//		cout << ret << endl;
//	}
//
//	
//	return 0;
//}


//#include<iostream>
//
//using namespace std;
//
//const int N = 1e6 + 10; const int M = 1e3 + 10;
//int a[N];
//
//int n, m;
//int kind;
//int mp[M];
//
//int main()
//{
//	cin >> n >> m;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> a[i];
//	}
//
//	int ret = n; int begin = 1;
//	int left = 1,right = 1;
//	while (right <= n)
//	{
//		if (mp[a[right]]++ == 0)
//		{
//			kind++;
//		}
//		while(kind == m)
//		{
//			int len = right - left + 1;
//			if (ret > len) ret = len, begin = left;
//			if (mp[a[left]]-- == 1)
//			{
//				kind--;
//			}
//			left++;
//		}
//		right++;
//	}
//	cout << begin << " " << begin + ret - 1 << endl;
//
//	return 0;
//}

//#include <iostream>
//
//using namespace std;
//
//string s;
//int mp[26];
//int kind;
//
//int main()
//{
//	cin >> s;
//	int n = s.size();
//	int ret = n;
//
//	for (int left = 0, int right; right < n; right++)
//	{
//		if (mp[s[right] - 'a']++ == 0)
//		{
//			kind++;
//		}
//
//		while (kind == 26)
//		{
//			ret = min(ret, right - left + 1);
//			if (mp[s[left]-- == 1])
//			{
//				kind--;
//			}
//			left++;
//		}
//		right++;
//	}
//
//	cout << ret << endl;
//
//	return 0;
//}

//丢手绢

//#include<iostream>
//
//using namespace std;
//
//typedef long long LL;
//const int N = 1e6 + 10;
//
//LL a[N];
//LL n,sum;
//
//int main()
//{
//	cin >> n;
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> a[i];
//		sum += a[i];
//	}
//
//	int left = 1; int right = 1;
//	LL ret = 0; LL k = 0;
//	while (right <= n)
//	{
//		k += a[right];
//		while (2*k >= sum)
//		{
//			ret = max(ret, sum - k);
//			k -= a[left++];
//		}
//		ret = max(ret, k);
//		right++;
//	}
//
//	cout << ret << endl;
//	return 0;
//}

//在排序数组中查找元素的第⼀个和最后⼀个位置

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class Solution 
{
public:
    vector<int> searchRange(vector<int>& nums, int target) 
	{
		if (nums.size() == 0)
		{
			return { -1,-1 };
		}
		auto it1 = lower_bound(nums.begin(), nums.end(), target);
		if (*it1 != target)
		{
			return { -1,-1 };
		}
		auto it2 = upper_bound(nums.begin(), nums.end(), target);
		return { it1, (it2 - 1) };
    }
};

int main()
{
	

	return 0;
}